package com.opencore.bean;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.opencore.dao.DocumentoDAO;
import com.opencore.dao.DteDocumentoDao;
import com.opencore.dao.DteEstadoDao;
import com.opencore.dao.DteLecturaDao;
import com.opencore.dto.DteDocumentoDTO;
import com.opencore.dto.DteEstadoDTO;
import com.opencore.dto.DteLecturaDTO;
import com.opencore.util.utiles;

public class VisualizarDTENewBean {

	
	public List getVisualizacionByNroDoc(String numeroDoc){
		boolean procesa = false;
		int reprocesa = 1;
		int contador  = 1;
		List<DteDocumentoDTO> documentosList = null;
		while(reprocesa!=2){			
			documentosList = null;
			DocumentoDAO documentDAO =  new DocumentoDAO();
				try {
					documentosList = documentDAO.getDocByNroDoc(numeroDoc);
					if(documentosList.size() > 0 ){
						DteDocumentoDTO dteDocDTO = documentosList.get(0);	
						String estadoU = String.valueOf(dteDocDTO.getEstadoUltimo()); 
						if (!estadoU.equals("5")){						
							if (contador != 2){
								System.out.println("Se ejecuta proceso de recargar de datos en VisualizarDTENewBean");
								long start = System.currentTimeMillis();
								procesa = ProcesarDTEBean.procesa();
								long end = System.currentTimeMillis();
								long res = end - start;
								System.out.println("Tiempo de proceso en segundos: "+res/1000);	
								contador++;
							}else{
								reprocesa = 2;
							}
						}else{
							reprocesa = 2;
						}
					}else{
						System.out.println("No existe el registros y se ejecuta proceso de recargar de datos en VisualizarDTENewBean");
						long start = System.currentTimeMillis();
						procesa = ProcesarDTEBean.procesa();
						long end = System.currentTimeMillis();
						long res = end - start;
						System.out.println("Tiempo de proceso en segundos: "+res/1000);							
						reprocesa = 2;
					}
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}			
		}
		return documentosList;		
				
	}
	
	public List getVisualizacionByRangoNroDoc(String numeroDoc, String numeroDoc2){
		boolean procesa = false;
		int reprocesa = 1;
		int contador  = 1;
		List<DteDocumentoDTO> documentosList = null;
		
			long start = System.currentTimeMillis();
			procesa = ProcesarDTEBean.procesa();
			long end = System.currentTimeMillis();
			long res = end - start;
			System.out.println("Tiempo de proceso en segundos: "+res/1000);	
			
			documentosList = null;
			DocumentoDAO documentDAO =  new DocumentoDAO();
				try {
					documentosList = documentDAO.getDocByRangoNroDoc(numeroDoc, numeroDoc2);	
					for (int i = 0; i < documentosList.size(); i++) {
						DteDocumentoDTO dteDocDTO = (DteDocumentoDTO) documentosList.get(i);
						System.out.println(dteDocDTO.getNroDocumento());
					}
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}			
		
		return documentosList;		
				
	}
	
	public List getVisualizacionByFecha(String fecha){
		System.out.println("fecha en beans"+fecha);
		boolean procesa = false;
		int reprocesa = 1;
		int contador  = 1;
		List<DteDocumentoDTO> documentosList = null;
		
			long start = System.currentTimeMillis();
			procesa = ProcesarDTEBean.procesa();
			long end = System.currentTimeMillis();
			long res = end - start;
			System.out.println("Tiempo de proceso en segundos: "+res/1000);	
			
			documentosList = null;
			DocumentoDAO documentDAO =  new DocumentoDAO();
					try {
						documentosList = documentDAO.getDocByFecha(fecha);
					} catch (ClassNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}			
		
		return documentosList;		
				
	}
	
	public List getVisualizacionByRangoFecha(String fecha1, String fecha2){
		//System.out.println("fecha en beans"+fecha);
		boolean procesa = false;
		int reprocesa = 1;
		int contador  = 1;
		List<DteDocumentoDTO> documentosList = null;
		
			long start = System.currentTimeMillis();
			procesa = ProcesarDTEBean.procesa();
			long end = System.currentTimeMillis();
			long res = end - start;
			System.out.println("Tiempo de proceso en segundos: "+res/1000);	
			
			documentosList = null;
			DocumentoDAO documentDAO =  new DocumentoDAO();
					try {
						documentosList = documentDAO.getDocByRangoFecha(fecha1, fecha2);
					} catch (ClassNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}			
		
		return documentosList;		
				
	}
	
	public String getDetalles(int nroDocumento) throws ClassNotFoundException, SQLException{
		StringBuilder textoCompleto = new StringBuilder(); 
		DteDocumentoDao documentDAO =  new DteDocumentoDao();
		List<DteDocumentoDTO> iDocumentoList = documentDAO.getAllByNroDoc(nroDocumento);
		for (int i=0; i< iDocumentoList.size(); i++){
			DteDocumentoDTO dteDocDTO2 = iDocumentoList.get(i);     		    
			textoCompleto.append(dteDocDTO2.getTexto().trim()).append('\n');	
		}						    
		return textoCompleto.toString();
	}


	

}
